package fiuba.algo3.vista;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.XMLOutputter;

import fiuba.algo3.partida.Partida;

public class VentanaGuardarPartida extends JFrame implements ActionListener{
	Partida miPartida;
	JTextField campoNombre;
	JButton aceptar;
	JButton salir;
	
	VentanaGuardarPartida(Partida unaPartida){
		super("Guardar partida");
		this.setBounds(50,50,600,200);
		this.setVisible(true);
		this.setLayout(null);
		
		this.miPartida = unaPartida;
		this.campoNombre = new JTextField();
		this.campoNombre.setBounds(200, 50, 300, 30);
		this.campoNombre.addActionListener(this);
		this.add(campoNombre);
		EventQueue.invokeLater(new Runnable() {

			   @Override
			     public void run() {
			         campoNombre.grabFocus();
			         campoNombre.requestFocus();
			     }
			});
		
		JLabel ingreseNombre = new JLabel("Ingrese nombre de partida:");
		ingreseNombre.setBounds(5, 50, 190, 30);
		this.add(ingreseNombre);
		
		this.aceptar = new JButton("Ok");
		this.aceptar.setBounds(520, 40, 50, 50);
		this.aceptar.addActionListener(this);
		this.add(aceptar);
		
		this.salir = new JButton("Salir");
		this.salir.setBounds(270, 130, 60, 30);
		this.salir.addActionListener(this);
		this.add(salir);
		
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == salir){
			this.setVisible(false);
			this.dispose();
		}
		
		else if (e.getSource() == aceptar || e.getSource() == campoNombre){
			
			if( campoNombre.getText().isEmpty()){
				new VentanaAvisoNombrePartidaIncorrecto();
			}else{
			
				SAXBuilder builder = new SAXBuilder();
				File xmlFile = new File("miPartida.xml");
				
				Document document = null;
				Element rootNode = null;
				
				try {
	
					document = (Document) builder.build(xmlFile);
					rootNode = document.getRootElement();
	
					} catch (IOException io) {
						System.out.println(io.getMessage());
					} catch (JDOMException jdomex) {
						System.out.println(jdomex.getMessage());
					}
				
				
				Element nuevaPartida = miPartida.serializar(campoNombre.getText());
				rootNode.addContent(nuevaPartida);
				try {
				XMLOutputter xmlOutput = new XMLOutputter();
				xmlOutput.output(document, new FileWriter("miPartida.xml"));
	
				System.out.println("File Saved!");
				} catch (IOException io) {
				System.out.println(io.getMessage());
				}
				
			this.setVisible(false);
			this.dispose();
			}
		
		}

	}
}
